查看原文
其他

PyCIL: 全面、可扩展、高效的类别增量学习工具包

SCIS 中国科学信息科学 2024-04-14

D-W Zhou, F-Y Wang, H-J Ye, D-C Zhan. PyCIL: A Python Toolbox for Class-Incremental Learning. Sci China Inf Sci, doi: 10.1007/s11432-022-3600-y

研究意义

过去十年间,基于深度神经网络的机器学习方法经历了飞速的发展,对社会的诸多方面都产生了深刻的影响与变革。然而,世界处在不断地变化之中,新的概念、事物在不断地涌现。一个可靠、可持续的人工智能系统在面对新的事物时,应当具备持续学习新的知识的能力,而不必从零开始学起。然而典型的神经网络模型直接在新到来的数据流上进行微调时,会导致严重的“灾难性的遗忘”——模型在学习“新知识”的同时快速地遗忘了“旧知识”。这种遗忘现象导致在开放动态环境下设计深度神经网络变得非常困难。类别增量学习 (Class-Incremental Learning),旨在设计有效的学习范式,帮助神经网络模型既能高效地学习不断到来的新的类别,同时维持对旧类别的判别能力。
当前类别增量学习领域进入蓬勃发展期,每年在顶级学术会议期刊上涌现的新算法不计其数。为此,本文设计并开源了PyCIL——一个增量学习算法工具包。希望能通过对该领域内基准数据集、典型方法的复现和整合,推动增量学习社区的发展,并帮助对此领域有兴趣的研究者们快速地复现和调试出最优的算法,并在此基础上进行创新性改进。

图1 类别增量学习问题设定


本文工作

为了方便研究者对该领域内算法全面、直观地掌握,PyCIL工具包既包括了增量学习领域内的典型基线方法(如Finetune和Replay),也囊括了早期类别增量学习领域的典型算法(如EWC,LwF,iCaRL等);此外,PyCIL将一直追踪并更新类别增量学习领域发表在顶级会议、期刊上的最新、性能最好的算法(如Coil,FOSTER等)。为方便研究人员开展工作,本文工具包已免费开源供下载使用:https://github.com/G-U-N/PyCIL。


当前PyCIL中已复现了十余种类别增量学习算法,简要介绍如下:

Finetune: 直接在新的数据上对模型参数进行微调的基线算法,将遭受严重的灾难性遗忘。

Replay: 通过保留少量旧类别数据作为范例集,在新数据更新过程中共同用于训练,实现对旧知识的复习。

EWC (PNAS 2017): 利用费雪信息矩阵来衡量参数的重要性,以其作为权重对参数偏移进行正则化约束。

LwF (ECCV 2016):  将旧类模型的输出作为软标签,利用知识蒸馏限制模型更新。

iCaRL (CVPR 2017): 在LwF的基础上,同时利用范例集对旧类样本进行复习,并使用最近类别中心分类器代替线性分类器。

GEM (NIPS 2017): 利用模型关于范例集的梯度对当前微调梯度进行修正,约束梯度更新方向。

BiC (CVPR 2019): 为模型额外学习偏差矫正层,实现新旧任务在输出维度上的校准。

WA (CVPR 2020): 在iCaRL的基础上将分类器幅度进行归一化,消除模型更新过程中的偏差。

PodNet (ECCV 2020): 对模型卷积层输出进行空间域 (spatial) 蒸馏以限制模型更新。

DER (CVPR 2021): 动态拓展模型结构,提高模型容量以适配新的增量学习任务。

RMM (NeurIPS 2021): 利用强化学习算法决策在不同增量阶段新、旧类样本的存储空间划分。

Coil (ACM MM 2021): 在增量学习过程中利用最优传输理论建立双向的知识传递,同时考虑旧类别对新类别的辅助与新类别对旧类别的约束。

FOSTER (ECCV 2022): 基于梯度提升算法,动态拓展和压缩模型结构,自适应地学习新的增量学习任务。


以上十余种算法又可以依照核心思路的不同,划分为以下5大类别,全面囊括了参数约束、知识蒸馏、范例回顾、模型矫正、模型扩张等多种不同角度处理类别增量学习的算法:

图2  PyCIL工具包内算法划分
除了PyCIL以外,当前也存在其他的开源增量学习工具包,PyCIL与这些工具包的差异如下图所示:


图3 PyCIL与其他增量学习工具包的对比

由此可见,PyCIL工具包具备以下特点:

1) 算法全面:截至目前,PyCIL中已实现了13种增量学习方法,包括两种基线算法,以及11种改进算法。这些算法均被发表在顶级国际会议/期刊上,可为后来的研究者们提供重要的研究基础。

2) 方便、高度自定义化的数据流:PyCIL 目前已支持多种类别增量学习领域的基准数据集,包括CIFAR100,ImageNet100,ImageNet1000上不同基础类别、不同增量阶段数目的数据流生成。方便研究者们在不同基准下测试比较不同方法的性能。

3) 运行高效:PyCIL支持GPU加速与分布式训练,提高算法运行效率,可供快速验证思路。

4) 长期维护:PyCIL 将对增量学习算法的研究进展将进行长期的跟踪与维护,积极、迅速地回复海内外研究者的问题。PyCIL将一直追踪并更新类别增量学习领域发表在顶级会议、期刊上的最新、性能最好的算法。截至目前,已在开源社区收获超过170 Stars,日均访问量超过100次。

5)可拓展性高:PyCIL的代码框架简洁,可读,自由度高,研究者们可以高效地替换、设计新的网络结构以及算法模块进行验证。


实验结果

为了验证所复现方法的正确性,提供性能保证,本文在被广泛使用的基准数据集CIFAR100, ImageNet100/1000上进行了大量实验。图4汇报了在不同的基准设定下,各个算法的准确率随类别数目的增加的变化曲线,表1汇报了在10阶段CIFAR100上各个算法的准确率数值变化。


图4 基准数据集上随类别数目增加的分类准确率结果


表1 10阶段CIFAR100数据集上不同方法的性能对比

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存